<script>
/* 
    1.数据类型
        2^53
    
    原始类型转换成对象
        null和undefined不能转换成对象
        数字和字符串
    对象到原始类型
    
        布尔  true
        数字  先调用valueOf() 看返回是否对象 是对象 再toString()  如果还是对象报错 不是对象再转换成数字 valueOf()  
        字符串 先调用toString()   再valueOf()   

        toString(可接受参数)   2-36数字
        随机数生成

    创建对象
        new Object ==new Object()

    变量     使用var   不使用var
        1、 局部变量   全局变量
        2、 不能删除   可以删除
        3、 变量提前   不被提前
    使用var  定义了一个变量  会有作用域   
    不使用  window 上加上一个属性 对象的属性可以被删除 使用delete

    无序列表的合集

    js操作符
    一元操作符 + - ++ -- typeof delete void 
    二元操作符 && || !(先转换) 
    . () []

    转换            简便写法
        Boolean()   !! xxx
        Number()    + xxx 一元操作符+
        String()    xxx+''

    加法 偏向字符串
        数字+布尔===》数字
        其他+字符串==》字符串
        
    关系运算符 偏向数字
    

*/
console.log(0-2**100054);
console.log('你好'.length);//2
console.log(Object(null));//{}
console.log(Object(undefined));//{}
console.log(Object(1));//
console.log(Object('abc'));//创建独立的索引 和length

console.log(Number(null));//0
console.log(Number(undefined));//NaN

console.log("---空数组转换成数字---");
console.log(Number([]));//0
console.log([].valueOf());//[]
console.log([].valueOf().toString());//''
console.log(Number(''));//0
console.log("---空对象转换成数字---");
console.log(Number({}));//NaN
console.log({}.valueOf());//{}
console.log({}.valueOf().toString());//[object Object]
console.log(Number({}.valueOf().toString()));//

console.log(c);
var c = 10 ;
// 不被删除
// delete c;
console.log(window);
// 是window的一个属性
b = 10
console.log(b);
// delete b;
console.log(window);

console.log(+'a');//NaN
console.log(-'123');//-123


console.log('abc'=='av');


</script>